home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 24 / Amiga Format AFCD24 (Feb 1998, Issue 108).iso / -in_the_mag- / emulation / amiga / uae-0.7.0b2 / src / sd-af / sound.c next >
C/C++ Source or Header  |  1998-01-20  |  2KB  |  73 lines

  1.  /* 
  2.   * UAE - The Un*x Amiga Emulator
  3.   * 
  4.   * Support for the AF sound system
  5.   * 
  6.   * Copyright 1996 Marcus Sundberg
  7.   */
  8.  
  9. #include "sysconfig.h"
  10. #include "sysdeps.h"
  11.  
  12. #include "config.h"
  13. #include "options.h"
  14. #include "memory.h"
  15. #include "custom.h"
  16. #include "audio.h"
  17. #include "gensound.h"
  18. #include "sounddep/sound.h"
  19. #include "events.h"
  20.  
  21. AFAudioConn  *aud;
  22. AC            ac;
  23. long          aftime;
  24. int           rate;
  25. uae_u16 sndbuffer[44100];
  26. uae_u16 *sndbufpt;
  27. int sndbufsize;
  28.  
  29. static int have_sound;
  30.  
  31. void close_sound(void)
  32. {
  33. }
  34.  
  35. int init_sound (void)
  36. {
  37.     AFSetACAttributes   attributes;
  38.     AFDeviceDescriptor *aDev;
  39.     int                 device;
  40.     
  41.     aud = AFOpenAudioConn(NULL);
  42.     have_sound = !(aud == NULL);
  43.     if (!have_sound) {
  44.     return 0;
  45.     }
  46.     
  47.     for(device = 0; device < ANumberOfAudioDevices(aud); device++) {
  48.     aDev = AAudioDeviceDescriptor(aud, device);
  49.     rate = aDev->playSampleFreq;
  50.     sndbufsize = (rate / 8) * 4;
  51.     if(aDev->inputsFromPhone == 0
  52.        && aDev->outputsToPhone == 0
  53.        && aDev->playNchannels == 1)
  54.         break;
  55.     }
  56.     if (device == ANumberOfAudioDevices(aud)) {
  57.     return 0;
  58.     }
  59.     
  60.     attributes.type = LIN16;
  61.     ac = AFCreateAC(aud, device, ACEncodingType, &attributes);
  62.     aftime = AFGetTime(ac);
  63.  
  64.     init_sound_table16 ();
  65.     eventtab[ev_sample].handler = sample16_handler;
  66.     sample_evtime = (long)maxhpos * maxvpos * 50 / rate;
  67.     
  68.     sndbufpt = sndbuffer;
  69.     sound_available = 1;
  70.     printf ("Sound driver found and configured for %d bits at %d Hz, buffer is %d bytes\n", 16, rate, sndbufsize);
  71.     return 1;
  72. }
  73.